package com.banyuan.HomeWork.集合类.数据结构;

import java.util.Arrays;

public class MayArrayLIst {
    private Object[] arr = new Object[5];

    //容量，不是数组长度，而是实际存放的元素的个数；
    private int size;

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    //将某个元素添加到尾部；
    public void add(Object obj) {
        arr[size++] = obj;
    }

    //将数组头部的元素删除；
    public void removeFirst() {
        //注意System.arraycopy方法不能给数组扩容；
        System.arraycopy(arr, 1, arr, 0, size - 1);
        arr[size - 1] = null;
        size--;
    }

    //在ArrayList的头部增加一个元素；
    public void addFirst(Object o) {
        if (size == arr.length) {
            //数组的扩容使用Arrays工具类中的copyOf方法；
            arr = Arrays.copyOf(arr, arr.length * 2);
        }
        System.arraycopy(arr, 1, arr, 0, size);
        arr[0] = o;
        size++;
    }


    //在ArrayList的指定下标位添加元素；
    public void add(int index, Object o) {
        if (size == arr.length) {
            arr = Arrays.copyOf(arr, arr.length * 2);
        }

        System.arraycopy(arr, index, arr, index + 1, size - index);
        arr[index] = o;
        size++;
    }

    //获取ArrayList的指定的下标未知的元素；
    public Object get(int index) {
        return arr[index];
    }

    //删除ArrayLIst指定的下标位置的元素；
    public void remove(int index){
        System.arraycopy(arr, index + 1, arr, index, size - index -1);
        size--;
    }
    @Override
    public String toString() {
        return "MayArrayLIst{" +
                "arr=" + Arrays.toString(arr) +
                '}';
    }

    public static void main(String[] args) {
        MayArrayLIst list = new MayArrayLIst();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("eee");
        int i = list.getSize();
        System.out.println(i);
        System.out.println(list);

        list.add(2, "www");
        System.out.println(list);

        list.remove(2);
        System.out.println(list);

    }
}
